home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / data / dora / doraupld.plp < prev    next >
Text File  |  1993-11-30  |  12KB  |  446 lines

  1. /*    プロンプト終了待ち共通処理        */
  2. %PROwait1{
  3.     wait(Wtime2,{type(@read(text))},{60},{type(@read(text))});
  4.     type({\n//\n});PROwait2
  5.     };
  6. %PROwait2{
  7.     loop    ({
  8.         wait({3},{im({Yes})},
  9.         {,\,#,?,0},{wait(1);type({0|W\n});im({No})},
  10.         {編集終了},{wait({3},,{>},{type({0|W\n});im({No})});},
  11.         {おわり},{wait({3},,{>},{type({0|W\n});im({No})});},
  12.         {自動署名をしますか},
  13.         {wait({3},,{>},{type({N|0|W\n});im({No})});}
  14.             );
  15.         });
  16.     loop    ({
  17.         wait    ({3},{type({\n});im({Yes})},
  18.             {>},{type({0|Q\n});im({No})},
  19.             {,?,0},{type({0|Q\n});im({No})}
  20.             );
  21.         });
  22.     };
  23.  
  24. %PROwait3{
  25.     loop    ({
  26.         wait({3},{im({Yes})},
  27.         {,\,#,?,0},{wait(1);type({0|0|Y\n});im({No})}
  28.         ,{0:quit},{wait(1);type({0|Y\n});im({No})}
  29.             );
  30.         });
  31.     loop    ({
  32.         wait    ({3},{type({\n});im({Yes})},
  33.             {>},{type({0|Q\n});im({No})},
  34.             {,?,0},{type({0|Q\n});im({No})}
  35.             );
  36.         });
  37.     };
  38. /*    ボードNo.を指定してメッセージをアップする    */
  39. %FORUMup{
  40.     [forum,mesno,replyto,title,text]
  41.     var    reply    [5];    reply:=replyto;
  42. case    (reply<1||reply>9999||reply={},
  43.     {No},
  44.     {
  45.     footnote(forum|{のボードNo.}|mesno|{番のNo.}|reply|{にコメントします});
  46.     case    (forum=NET,
  47.         {Yes},{type({B|#}|mesno|{|R|}|reply|{|}|title|{\n})},
  48.         {No},{type({B|#}|mesno|{|}|forum|{|R|}|reply|{|}|title|{\n})}
  49.         );
  50.     wait(Wtime2,
  51.         ,{指定が間違っています},{PROwait3}
  52.         ,{パスワードが違います},{type({Q\n})}
  53.         ,{既にこのメッセージにはレスポンスが有ります},
  54.             {type({E|}|title|{\n});type({Y|N\n});PROwait1}
  55.         ,{[Y]},{type({Y|N\n});PROwait1});
  56.     },
  57.     {Yes},
  58.     {
  59.     footnote(forum|{のボードNo.}|mesno|{番にアップロードします});
  60.     case    (forum=NET,
  61.         {Yes},{type({B|#}|mesno|{|E|}|title|{\n})},
  62.         {No},{type({B|#}|mesno|{|}|forum|{|E|}|title|{\n})}
  63.         );
  64.     wait(Wtime2,
  65.         ,{パスワードが違います},{type({Q\n})}
  66.         ,{[Y]},{type({Y|N\n});PROwait1});
  67.     })};
  68. /*    アクセスユーザーの確認 & 爆裂トーク攻撃    */
  69. %BENONup{
  70.     [sendto,text]
  71. /*      爆裂トーク前処理    */
  72. %preBenon{
  73.     WhoRes:=@read(TEMP2|{_whotext.tmp});IDbak:={};
  74.     %ckWho{[BID,Bfil]
  75.     var n[3];
  76.     loop    ({    n:=n+1;
  77.         %a    @getline(WhoRes,n,1);
  78.         case    (a={},    
  79.             {Yes},{footnote(BID|{はアクセスしていません});
  80.                 case    (BID<>{},
  81.                     {Yes},
  82.                     {
  83.                     case    (IDbak<>{},
  84.                         {Yes},{IDbak:=IDbak|{,}|BID},
  85.                         {No},{IDbak:=BID}
  86.                         );
  87.                     });im({No})
  88.                 },,
  89.             {case    (@head(@getchar(a,6,8),{ })
  90.                 =@head(@getchar(BID,1,10),{ }),
  91.                 {Yes},
  92.                 {
  93.                 footnote(BID|{を攻撃します});
  94.                 sendBenon(@getchar(a,4,1),@getchar(a,15,8),Bfil)
  95.                 },
  96.                 {No},{footnote({取得データの}|n|
  97.                 {行目を確認中});im({Yes})}
  98.                 )
  99.             });
  100.         });
  101.     };
  102.     footnote(sendto|{に爆裂トーク攻撃をします});
  103.     IDlist:=sendto;
  104. loop    ({
  105.     ckWho(@head(IDlist,{,}),text);
  106.     IDlist:=@body(IDlist,{,});
  107.     case    (IDlist={},
  108.         {Yes},{im({No})},
  109.         {No},{im({Yes})}
  110.         );
  111.     });
  112.     };
  113. /*      爆裂トーク処理    */
  114. %sendBenon{[chNo,HanDle,DenPou]
  115.     wait(1);type({T\n});
  116.     loop    ({
  117.         wait    ({3},{im({Yes})},
  118.         {チャンネルを指定して下さい}
  119.         ,{type(chNo|{\n});im({Yes})},
  120.         {トークモードに入りました。}
  121.         ,{    
  122.         %nowhh    @getchar(@daylong,16,2);
  123.     case    (4>=nowhh || nowhh>18,
  124.         {Yes},{type({今晩は、}|HanDle|{さん!\n})},
  125.         {No},{
  126.         case    (10>=nowhh || nowhh>4,
  127.             {Yes},{type({お早ようございます、}
  128.                 |HanDle|{さん!\n})},
  129.             {No},{case    (18>=nowhh || nowhh>10,
  130.                     {Yes},{type({今日は、}
  131.                         |HanDle|{さん!\n})}
  132.                     );
  133.                 });
  134.             });
  135.         send(DenPou);type({\n//\n});im({Yes})
  136.         },
  137.         {トークモードを終了しました。},{im({Yes})},
  138.         {,?,0},{im({No})},
  139.         {メイン},{im({No})},
  140.         {メイン},{im({No})},
  141.         {MAIN},{im({No})}
  142.             )
  143.         });
  144.     };
  145.     
  146.     DOWNCHECK;delfile(TEMP2|{_whotext.tmp});
  147.     receive(TEMP2|{_whotext.tmp});CHeck:={Yes};type({W\n});
  148.     footnote({現在}|NET|{-NETにアクセス中のユーザーを確認します});
  149.     loop    ({
  150.         wait    ({3},{im({Yes})},
  151.             {,?,O},{DOWNSTOP;im({No})}
  152.             )
  153.         });
  154. case    (ESCon={No},
  155.     {No},    {dispoff(!DEBUG);command({escctr -d}|TEMP2|{ -K}|TEMP2|{ }|
  156.         TEMP2|{_whotext.tmp});dispoff({No})
  157.         },,
  158.     );
  159.     case    (text={},
  160.         {Yes},{footnote({爆裂トーク文章が未設定です})},
  161.         {No},
  162.         {case    (@filechk(TEMP2|{_whotext.tmp})={},
  163.             {Yes},
  164.             {footnote({アクセスデータの読み込みに失敗しました})},
  165.             {No},{footnote({爆裂トーク処理をします});preBenon}
  166.             )
  167.         })
  168.     };
  169. /*    メールをアップする    */
  170. %MAILup{[sendto,title,text]
  171.     %MUP    {[MID]
  172.         footnote(MID|{へメールを送ります});
  173.         type({ME|}|MID|{|}|title|{\n});
  174.         wait(Wtime2,,
  175.         {[Y]},{type({Y|N\n});footnote({メール送信中});
  176.             wait(Wtime2,,{60},{});
  177.             case(text,{},,,{send(text)});
  178.             type({\n//\n});
  179.             PROwait2},
  180.         {IDの指定が違います}
  181.             ,{wait(Wtime2,,{quit},{type({0|0|Q\n});wait(3)})},
  182.         {quit},{type({\n})})
  183.         };
  184.  
  185.     IDbak:=@im(sendto|{,});
  186.     loop    ({
  187.         MUP(@head(IDbak,{,}));
  188.         IDbak:=@body(IDbak,{,});
  189.         case    (IDbak={},    
  190.             {Yes},{im({No})},
  191.             {No},{im({Yes})}
  192.             );
  193.         });
  194.     };
  195. /*    プロフィール情報をアップする    */
  196. %PROFup{[text]
  197.     footnote(ID|{のプロフィール情報を登録します});type({P|W|N\n});
  198.     wait(Wtime2,{AbortOff({\nホストがおもいよ~\n})},{60},{});
  199.     case(text,{},,,{send(text)});type({\n//\n});
  200.     PROwait2;
  201.     };
  202. /*    メモ書き込み情報をアップする    */
  203. %MEMOup{[text] 
  204.     footnote({メモ書き込み情報に}|@read(text)|{を登録します});wait(2);
  205.     type({\\\n});
  206.     wait(Wtime2,{type(@read(text))},{[RET]},{type(@read(text))});
  207.     type({\n});wait(2)};
  208. /*    データライブラリにアップする    */
  209. %sento{    wait({300},,{で中断},{sendy(datafile);
  210.     loop    ({
  211.     wait({3},{im({Yes})}
  212.         ,{に失敗},{
  213.             footnote({m(_._)m ペコリ>ユーザー様});im({No});
  214.             write(UP2|{_mopres.rsv},{保留;}|linebuf)
  215.             }
  216.         ,{に成功},{footnote({アップロードを終了しました。});im({No})})
  217.         });
  218.         wait(Wtime2,{type({0|Q\n})},{,nn,?,0},{wait(3);type({0|Q\n})})})
  219.         };
  220. %LIBup1{[forumlib,libno,dataname,keyword,docfile,datafile]
  221.     %otto2 {SNDMSG({okasi_f.snd});wait(2);
  222.         write(UP2|{_mopres.rsv},{保留;}|linebuf);
  223.         display({\n☆ファイル名に日本語が入っているとホストが受け付け}|
  224.             {てくれない様です、次の処理を行います\n});type({\n});
  225.         };
  226.      %otto    {SNDMSG({okasi_f.snd});wait(2);
  227.         write(UP2|{_mopres.rsv},{保留;}|linebuf);
  228.         display({\n☆ライブラリ番号が違う or ファイル名が重複して}|
  229.             {いる or ファイル名に日本語が入っているとホストが}|            {受け付けてくれない の為、次の処理を行います\n});type({\n});
  230.         wait(Wtime2,
  231.             ,{0:quit},{
  232.             type({0\n});wait(Wtime2,,{,H,nn,?,0},{type({0|Q\n})})
  233.                 }
  234.             ,{,?,Q},{type({Q\n})}
  235.             ,{,H,nn,?,0},{type({0|Q\n})})
  236.         };
  237.     type({\n});
  238.     wait(Wtime2,{AbortOff({ホストの反応が鈍いよぉ~\n})},{,?,}
  239.     ,{
  240.     case    (forumlib=NET,
  241.         {Yes},{type({F#}|libno|{|U|}|dataname|{|}|keyword|{\n})},
  242.         {No},{type({F#}|libno|{|}|forumlib|{|U|}|dataname|
  243.                         {|}|keyword|{\n})}
  244.         );
  245.     });
  246.     wait(Wtime2,
  247.         ,{/N) >},
  248.         {
  249.         case    (@filechk(docfile),
  250.             {Yes},
  251.             {
  252.             type({Y|N\n});
  253.             wait(Wtime2,{AbortOff({ホストがおもいよ~\n})},{60},{});
  254.             case(docfile,{},,,{type(@read(docfile))});
  255.             type({\n//\n});
  256.             wait(Wtime2,{type({\n})}
  257.                 ,{,?,0},{type({0|W\n})}
  258.                 ,{/N) >},{type({N|0|W\n})})
  259.             },
  260.             {No},{type({N\n})}
  261.             );
  262.         wait(Wtime2,,{Protocol},{wait(1);type({Y\n})});sento
  263.         }
  264.         ,{Protocol},{wait(1);type({Y\n});sento}
  265.         ,{ファイル名を入力して下さい},{otto}
  266.         ,{そのファイルは既に存在します},{otto}
  267.         ,{ボードが見つかりません},{otto}
  268.         ,{ボードの指定が違います},{otto}
  269.         ,{パスワードが違います},{otto})
  270.     };
  271. %DLIBup{[forumlib,libno,dataname,keyword,docfile,datafile]
  272.     case    (forumlib<>{} && dataname<>{} && keyword<>{}
  273.                  && @filechk(datafile),
  274.         {Yes},
  275.         {footnote(forumlib|{の}|libno|
  276.             {番ライブラリにアップロードします});
  277.         LIBup1(forumlib,libno,dataname,keyword,docfile,datafile)
  278.         },
  279.         {No},
  280.         {display({必要なデータが揃っていないため}|
  281.                         {次の処理へスキップします\n});
  282.         write(UP2|{_mopres.rsv},{保留;}|linebuf);
  283.         })
  284.     };
  285. %SMAILup{[title,text]
  286.     case    ( @filechk(text),
  287.         {Yes},{footnote({シスオペ宛メールのアップロード中});
  288.     case(title={},{No},{
  289.     type({ME|SYSOP|}|title|{\n});
  290.     type({Y|N\n});footnote({メール送信中});
  291.     wait(Wtime2,{type(@read(text))},{60},{type(@read(text))});
  292.     type({\n//\n});
  293.     PROwait2;
  294.     },
  295.     {Yes},{footnote({タイトルが未記入です})})},
  296.             {No},{display({必要なデータが揃っていないため}|
  297.                 {次の処理へスキップします\n})}
  298.         )};
  299. /*    制御ファイルの内容に従って自動アップロードする        */
  300. /*    アップロードするテキストファイル名を決定する    */
  301. %UPtext{[fname]
  302.     case    (@filechk(fname),
  303.         {Yes},{im(fname)},
  304.         {No},
  305.         {
  306.         SNDMSG({okasi_f.snd});
  307.         display(fname|{がありません\n});
  308.         im({});
  309.         });
  310.     };
  311. /*    アップ先の振り分け    */
  312. %AUTOup1{case    (@head(linebuf,{=}),
  313.         {forum},
  314.         {var    FILE    [256];
  315.         FILE:=@head(@body(linebuf,{file=},{;}),{;});
  316.         loop    ({
  317.             case    (@head(FILE,{,})<>{},
  318.                 {Yes},
  319.                 {FORUMup(
  320.                     @head(@body(linebuf,{forum=},{;}),{;}),
  321.                     @head(@body(linebuf,{mes=},{;}),{;}),
  322.                     @head(@body(linebuf,{reply=},{;}),{;}),
  323.                     @body(linebuf,{title=},{\n}),
  324.                     @UPtext(@head(FILE,{,})))
  325.                 });
  326.             FILE:=@body(FILE,{,});im(FILE<>{});
  327.             });
  328.         im({Yes});
  329.         },
  330.         {benon},
  331.         {
  332.         var    FILE    [256];
  333.         FILE:=@head(@body(linebuf,{file=},{;}),{;});
  334.         loop    ({
  335.             case(@head(FILE,{,})<>{},
  336.                 {Yes},
  337.                 {BENONup (
  338.                     @head(@body(linebuf,{benon=},{;}),{;}),
  339.                     @UPtext(@head(FILE,{,}))
  340.                     )
  341.                 });
  342.             FILE:=@body(FILE,{,});im(FILE<>{});
  343.             });
  344.         im({Yes});
  345.         },
  346.         {mail},
  347.         {
  348.         var    FILE    [256];
  349.         FILE:=@head(@body(linebuf,{file=},{;}),{;});
  350.         loop    ({
  351.             case(@head(FILE,{,})<>{},
  352.                 {Yes},
  353.                 {MAILup (
  354.                     @head(@body(linebuf,{mail=},{;}),{;}),
  355.                     @body(linebuf,{title=},{\n}),
  356.                     @UPtext(@head(FILE,{,}))
  357.                     )
  358.                 });
  359.             FILE:=@body(FILE,{,});im(FILE<>{});
  360.             });
  361.         im({Yes});
  362.         },
  363.         {profile},
  364.         {PROFup(@UPtext(@tail(linebuf,{file=},{;})));im({Yes})
  365.         },
  366.         {whomemo},    /*書き込みメモをアップ */
  367.         {MEMOup(@UPtext(@tail(linebuf,{file=},{;})));im({Yes})
  368.         },
  369.         {forumlib},
  370.             {var    FILE    [256];
  371.             FILE:=@tail(linebuf,{datafile=},{;});
  372.             loop    ({case    (@head(FILE,{,})<>{},
  373.                 {Yes},
  374.                 {DLIBup(
  375.                     @tail(linebuf,{forumlib=},{;}),
  376.                     @tail(linebuf,{libno=},{;}),
  377.                     @tail(linebuf,{dataname=},{;}),
  378.                     @tail(linebuf,{keyword=},{;}),
  379.                     @UPtext(@tail(linebuf,{docfile=},{;})),
  380.                     @UPtext(@head(FILE,{,})))
  381.                 });
  382.             FILE:=@body(FILE,{,});im(FILE<>{});
  383.             });
  384.         im({Yes});
  385.         },
  386.         {sysmail},
  387.         {
  388.         SMAILup (@body(linebuf,{title=},{\n}),
  389.                 @UPtext(@head(@body(linebuf,{file=},{;}),{;})));
  390.         im({Yes});
  391.         },
  392.         {},{im({No})},    /* 空文字列なら終了 */
  393.         ,{im({Yes})}    /* それ以外なら次の行を読む */
  394.         );
  395.     };
  396. %AUTOup    {[file]
  397.     case    (@filechk(file),
  398.         {Yes},
  399.         {wait(5);delfile(UP2|{_mopres.rsv});
  400.         line:=0;
  401.         loop    ({
  402.             line:=line+1;linebuf:={};
  403.             linebuf:=@read(file,line,1);
  404.             case    (@getchar(linebuf,1,5)={保留;},
  405.                 {Yes},
  406.                 {write(UP2|{_mopres.rsv},linebuf);im({Yes})},
  407.                 {No},
  408.                 {AUTOup1;
  409. /*爆裂未処理IDは予約に再登録*/    case    (IDbak<>{},
  410.                     {Yes},
  411.                     {linebuf:={benon=}|IDbak|{;file=}|
  412.                     @head(@body(linebuf,{file=},{;}),{;})|
  413.                     {;\n};
  414. /*    未処理IDをデフォルトにする    */    IDbak:={};
  415.                     write(UP2|{_mopres.rsv},linebuf)},,
  416.                     );
  417.                 },
  418.                 );
  419.             });
  420.         },
  421.         {No},
  422.         {
  423.         SNDMSG({okasi_f.snd});
  424.         display({\n}|file|{制御ファイルがありません\n});
  425.         });
  426.     };
  427. /*    アップロード制御ファイルの有無の判定処理    */
  428. %AUTOUPLD{
  429.     footnote({自動アップロードを開始します});
  430.     case    (@filechk(UP2|{_mopres.ctl}),
  431.         {Yes},
  432.         {
  433.         AUTOup(UP2|{_mopres.ctl});
  434.         footnote({自動アップロードを終了しました});
  435.         delfile(UP2|{_mopres.bak});
  436.         renname(UP2|{_mopres.ctl},{_mopres.bak});
  437.         case    (@filechk(UP2|{_mopres.rsv}),
  438.             {Yes},
  439.             {renname(UP2|{_mopres.rsv},{_mopres.ctl})}
  440.             );
  441.         });
  442.     };
  443. var line[3];
  444. var linebuf[258];
  445. var IDbak[80];    /* 爆裂トーク & メールup未処理IDリスト    */
  446. AUTOUPLD;